/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ucue.ptc.rest;

import com.google.gson.Gson;
import edu.ucue.ptc.gco.mdl.Direccion;
import edu.ucue.ptc.gco.mdl.Empleado;
import edu.ucue.ptc.gco.mdl.Ruta;
import edu.ucue.ptc.gco.ngc.EmpleadoManagerLocal;
import edu.ucue.ptc.gco.ngc.RutaManagerLocal;
import edu.ucue.ptc.gco.ngc.UsuarioManagerLocal;
import edu.ucue.ptc.gco.util.AtributoInvalidoException;
import java.io.Serializable;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.PathParam;
import javax.ws.rs.Consumes;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;

/**
 * REST Web Service
 *
 * @author Valex
 */
@Path("ruta/{idpersona}/{nombre}/{clave}/{callback}")
@RequestScoped
public class RutaResource implements Serializable {

    @Context
    private UriInfo context;
    @Inject
    private UsuarioManagerLocal UsuarioManager;
    @Inject
    private RutaManagerLocal RutaManager;

    //vodehaus json object
    //[json serializer] guava
    //gson
    /**
     * Creates a new instance of LoginResource
     */
    public RutaResource() {
    }

    /**
     * Retrieves representation of an instance of edu.ucue.gped.LoginResource
     *
     * @return an instance of java.lang.String
     */
    @GET
    @Produces("application/json")
    @Named
    public String getJson(@PathParam("callback") String callback, @PathParam("idpersona") int idpersona, @PathParam("nombre") String user,
            @PathParam("clave") String pass) {
        int IdPersona = UsuarioManager.verificarUsuario(user, pass);
        //String a=",\"valor\":\""+verificarUsuario;

        if (IdPersona != -1) {

            Ruta ruta = RutaManager.rutaEmpleado(idpersona, user, pass);

            if (ruta == null) {
                return callback + "({\"callback\":\"" + callback + "\",\"errormsg\":\"" + "Usted no tiene asignada ninguna ruta para hoy" + "\"})";
                //new JSONWithPadding("\",\"errormsg\":\""+"Usted no esta habilitado para esta aplicación",callback);
            } else {
                //     return "({\"callback\":\""+callback+"\",\"id\":\""+ruta.getIdRuta()+"\",\"fecha\":\""+ruta.getFecha()+"\"})";
                List<Direccion> list = ruta.getDirecciones();
                String trama=callback+"({\"callback\":\"" + callback + "\",\"idRuta\":\""+ruta.getIdRuta()+ "\",\"fecha\":\""+ruta.getFecha()+ "\",\"empleado\":\""+ruta.getEmpleado().getNombres()+" "+ruta.getEmpleado().getApellidos()+ "\"";
                for(int i=0; i< list.size();i++){
                  //  if(i==0) trama=trama+"\"direccion"+i+"\":"+"\"{idDireccion\":"+list.get(i).getIdDireccion() +"\",\"callePrincipal\":\"" + list.get(i).getCallePrincipal()+"\",\"calleSecundaria\":\""+list.get(i).getCalleSecundaria() +"\",\"latitud\":\""+list.get(i).getLatitud() +"\",\"longitud\":\""+list.get(i).getLongitud() +"\",\"idCliente\":\""+list.get(i).getPersona().getIdPersona()+"\",\"nombre\":\""+list.get(i).getPersona().getNombres()+"\",\"apellido\":\""+list.get(i).getPersona().getApellidos()+ "\"}";
                    //else 
                    trama=trama+",\"direccion"+i+"\":"+"{\"idDireccion\":\""+list.get(i).getIdDireccion() +"\",\"callePrincipal\":\"" + list.get(i).getCallePrincipal()+"\",\"calleSecundaria\":\""+list.get(i).getCalleSecundaria() +"\",\"latitud\":\""+list.get(i).getLatitud() +"\",\"longitud\":\""+list.get(i).getLongitud() +"\",\"idCliente\":\""+list.get(i).getPersona().getIdPersona()+"\",\"nombre\":\""+list.get(i).getPersona().getNombres()+"\",\"apellido\":\""+list.get(i).getPersona().getApellidos()+ "\"}";
                }
              //  Gson json = new Gson();
              //  String j = json.toJson(ruta.getDirecciones());
                return  trama + "})";
                //  return new JSONWithPadding(j,callback);
            }
        }

        return "({\"callback\":\"" + callback + "\",\"errormsg\":\"" + "Usuario no registrado" + "\"})";
        // return new JSONWithPadding("Hola",callback);
    }
}
